package com.example.service;

import java.util.List;
import java.util.Map;

import com.example.dto.ApiResponse;
import com.example.entity.ExamAntiCheatingRecord;

/**
 * 考试防作弊服务接口
 * 提供考试过程中可疑行为的记录、查询和分析功能
 */
public interface ExamAntiCheatingService {
    
    /**
     * 记录可疑行为
     * @param examId 考试ID
     * @param studentId 学生ID
     * @param behaviorType 行为类型
     * @param behaviorDetails 行为详情
     * @param riskLevel 风险等级
     * @return 操作结果
     */
    ApiResponse<?> recordSuspiciousBehavior(Long examId, Long studentId, String behaviorType, 
                                          String behaviorDetails, String riskLevel);
    
    /**
     * 获取考试的所有可疑行为记录
     * @param examId 考试ID
     * @return 可疑行为记录列表
     */
    List<ExamAntiCheatingRecord> getExamSuspiciousRecords(Long examId);
    
    /**
     * 获取特定学生在考试中的可疑行为记录
     * @param examId 考试ID
     * @param studentId 学生ID
     * @return 可疑行为记录列表
     */
    List<ExamAntiCheatingRecord> getStudentSuspiciousRecords(Long examId, Long studentId);
    
    /**
     * 获取考试的可疑行为统计信息
     * @param examId 考试ID
     * @return 统计信息
     */
    Map<String, Object> getExamSuspiciousStatistics(Long examId);
    
    /**
     * 获取学生的可疑行为统计信息
     * @param examId 考试ID
     * @param studentId 学生ID
     * @return 统计信息
     */
    Map<String, Object> getStudentSuspiciousStatistics(Long examId, Long studentId);
    
    /**
     * 根据风险等级获取可疑行为记录
     * @param examId 考试ID
     * @param riskLevel 风险等级
     * @return 可疑行为记录列表
     */
    List<ExamAntiCheatingRecord> getSuspiciousRecordsByRiskLevel(Long examId, String riskLevel);
    
    /**
     * 批量记录考试提交时的可疑行为数据
     * @param examId 考试ID
     * @param studentId 学生ID
     * @param behaviorCounts 行为计数数据
     * @return 操作结果
     */
    ApiResponse<?> batchRecordBehaviorCounts(Long examId, Long studentId, Map<String, Integer> behaviorCounts);
} 